/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.dojotec.biblioteca.jsf.application;

import com.dojotec.biblioteca.jsf.dao.UsuarioDAO;
import com.dojotec.biblioteca.jsf.domain.Usuario;
import com.dojotec.biblioteca.jsf.domain.UsuarioRepository;
import java.util.LinkedList;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

/**
 *
 * @author igocoelho
 */
public class UsuarioBean {

    private DataModel usuarios = null;
    private UsuarioRepository usuario = new UsuarioDAO();
    private Usuario usuarioPojo = new Usuario();
    
    public UsuarioBean() {
        
    }
    
    public String gotoNovoUsuario() {
        return "novoUsuario";
    }       
    
    public String gotoPrincipal() {
        return "principal";
    }
    
    public String gotoAlteraUsuario() {
        setUsuarioPojo((Usuario)usuarios.getRowData());
        return "alteraUsuario";
    }
    
    public String gotoListaUsuarios() {
        return "listaUsuarios";
    }

    public DataModel getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(DataModel usuarios) {
        this.usuarios = usuarios;
    }

    public UsuarioRepository getUsuario() {
        return usuario;
    }

    public void setUsuario(UsuarioRepository usuario) {
        this.usuario = usuario;
    }

    public Usuario getUsuarioPojo() {
        return usuarioPojo;
    }

    public void setUsuarioPojo(Usuario usuarioPojo) {
        this.usuarioPojo = usuarioPojo;
    }
    
    public DataModel getTodosUsuarios() {
        setUsuarios(new ListDataModel(getUsuario().buscarTodos()));
        return getUsuarios();
    }
    
    public String salvar() {
        try {
            usuario.salvar(getUsuarioPojo());
            return gotoListaUsuarios();
        } catch (Exception e) {
            return "failure";
        }
    }
    
    public String atualizar() {
        try {
            usuario.atualizar(getUsuarioPojo());
            return gotoListaUsuarios();
        } catch (Exception e) {
            return "failure";
        }    
    }
    
    public String excluir() {
        try {
            setUsuarioPojo((Usuario)usuarios.getRowData());
            usuario.excluir(getUsuarioPojo());
            return gotoListaUsuarios();
        } catch (Exception e) {
            return "failure";
        }
    }
    
        
    public List<SelectItem> getComboUsuarios() {
        List<SelectItem> toReturn = new LinkedList<SelectItem>();
        UsuarioRepository usuarioDao = new UsuarioDAO();
        for (Usuario usuarioPj: usuarioDao.buscarTodos()) {
            toReturn.add(new SelectItem(usuarioPj, usuarioPj.getNome()));
        }
        return toReturn;
    }
}
